/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import java.util.*;
import java.sql.*;
import dbUtil.*;
import utils.*;
import iteradores.IteradorTipoDocumento;

/**
 *
 * @author Administrador
 */
public class TipoDocumento extends PgAbm implements Abm {

    ResultSet rs_tipodocumento;
    private Hashtable th_tipodocumento = new Hashtable();

    public TipoDocumento() {
        // Seteamos el nombre de la tabla a consultar
        super.setTableName("tipodocumento");

        // Se establecen los campos de la tabla
        ArrayList array_campos = new ArrayList();
        array_campos.add("idtipodocumento");
        array_campos.add("descripcion");
        array_campos.add("usuario_ing");
        array_campos.add("fecha_ing");

        // Se establece la clave
        ArrayList array_claves = new ArrayList();
        array_claves.add("idtipodocumento");

        // Inicializamos el hash que contendra los valores de la tabla
        super.initMapping();

        // Se establecen estos valores en el padre
        super.setCampos(array_campos);
        super.setClaves(array_claves);

        super.setSequence("idtipodocumento", "idtipodocumento_idtipodocumento_seq");
    }

    public String getIdTipoDocumento() {
        return (String) getMapValue("idtipodocumento");
    }

    public void setIdTipoDocumento(String idtipodocumento) {
        setMapValue("idtipodocumento", idtipodocumento);
    }

    public String getDescripcion() {
        return (String) getMapValue("descripcion");
    }

    public void setDescripcion(String descripcion) {
        setMapValue("descripcion", descripcion);
    }

    public String getUsuario_ing() {
        return (String) getMapValue("usuario_ing");
    }

    public void setUsuario_ing(String usuario_ing) {
        setMapValue("usuario_ing", usuario_ing);
    }

    public String getFecha_ing() {
        return (String) getMapValue("fecha_ing");
    }

    public void setFecha_ing(String fecha_ing) {
        setMapValue("fecha_ing", fecha_ing);
    }

    public Iterador getIterator() throws Exception {
        ResultSet rs_datos = super.getResultSet();
        IteradorTipoDocumento iter = new IteradorTipoDocumento(rs_datos);
        return iter;
    }

    public int getTiposDocumentos() throws Exception {
        String sql_query = "";
        int cant_filas;
        Hashtable th_aux = new Hashtable();

        sql_query = "select * from tipodocumento order by 2; ";

        sql_query += getLimitOffset();

        Statement stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                ResultSet.CONCUR_READ_ONLY);

        // Se ejecuta la consulta y se recupera el ResultSet        
        System.out.println("SQL: " + sql_query);
        rs_tipodocumento = stm.executeQuery(sql_query);

        cant_filas = 0;
        if (rs_tipodocumento.last()) {
            cant_filas = rs_tipodocumento.getRow();
            rs_tipodocumento.beforeFirst();
        }

        if (rs_tipodocumento != null) {
            while (rs_tipodocumento.next()) {
                th_aux.put(rs_tipodocumento.getString(1), rs_tipodocumento.getString(2));
            }
            th_tipodocumento = th_aux;
        }

        System.out.println("Cantidad Filas: " + cant_filas);
        return cant_filas;
    }

    public String getTipoDocumentoByID(String ID) throws Exception {
        String result = "";

        if (!th_tipodocumento.isEmpty()) {
            result = (String) th_tipodocumento.get(ID);
        }
        return result;
    }

    public Iterador getIteratorAll() throws Exception {
        IteradorTipoDocumento iter = new IteradorTipoDocumento(rs_tipodocumento);
        return iter;
    }
}
